home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / DefaultStyledDocument.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  13.9 KB  |  577 lines

  1. package javax.swing.text;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.io.IOException;
  6. import java.io.ObjectInputStream;
  7. import java.util.Enumeration;
  8. import java.util.Vector;
  9. import javax.swing.event.ChangeListener;
  10. import javax.swing.event.DocumentListener;
  11. import javax.swing.event.UndoableEditEvent;
  12. import javax.swing.event.DocumentEvent.EventType;
  13. import javax.swing.undo.CompoundEdit;
  14. import javax.swing.undo.UndoableEdit;
  15.  
  16. public class DefaultStyledDocument extends AbstractDocument implements StyledDocument {
  17.    public static final int BUFFER_SIZE_DEFAULT = 4096;
  18.    protected ElementBuffer buffer;
  19.    private transient Vector listeningStyles;
  20.    private transient ChangeListener styleChangeListener;
  21.    private transient ChangeListener styleContextChangeListener;
  22.    // $FF: synthetic field
  23.    static Class class$javax$swing$event$DocumentListener;
  24.  
  25.    public DefaultStyledDocument() {
  26.       this(new GapContent(4096), new StyleContext());
  27.    }
  28.  
  29.    public DefaultStyledDocument(AbstractDocument.Content var1, StyleContext var2) {
  30.       super(var1, var2);
  31.       this.listeningStyles = new Vector();
  32.       this.buffer = new ElementBuffer(this, this.createDefaultRoot());
  33.       Style var3 = var2.getStyle("default");
  34.       this.setLogicalStyle(0, var3);
  35.    }
  36.  
  37.    public DefaultStyledDocument(StyleContext var1) {
  38.       this(new GapContent(4096), var1);
  39.    }
  40.  
  41.    public void addDocumentListener(DocumentListener var1) {
  42.       Vector var2 = this.listeningStyles;
  43.       synchronized(var2){}
  44.  
  45.       try {
  46.          int var4 = super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener")));
  47.          super.addDocumentListener(var1);
  48.          if (var4 == 0) {
  49.             if (this.styleContextChangeListener == null) {
  50.                this.styleContextChangeListener = this.createStyleContextChangeListener();
  51.             }
  52.  
  53.             if (this.styleContextChangeListener != null) {
  54.                StyleContext var5 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  55.                var5.addChangeListener(this.styleContextChangeListener);
  56.             }
  57.  
  58.             this.updateStylesListeningTo();
  59.          }
  60.       } catch (Throwable var7) {
  61.          throw var7;
  62.       }
  63.  
  64.    }
  65.  
  66.    public Style addStyle(String var1, Style var2) {
  67.       StyleContext var3 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  68.       return var3.addStyle(var1, var2);
  69.    }
  70.  
  71.    // $FF: synthetic method
  72.    static Class class$(String var0) {
  73.       try {
  74.          return Class.forName(var0);
  75.       } catch (ClassNotFoundException var2) {
  76.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  77.       }
  78.    }
  79.  
  80.    protected void create(ElementSpec[] var1) {
  81.       try {
  82.          if (((AbstractDocument)this).getLength() != 0) {
  83.             ((AbstractDocument)this).remove(0, ((AbstractDocument)this).getLength());
  84.          }
  85.  
  86.          ((AbstractDocument)this).writeLock();
  87.          AbstractDocument.Content var4 = ((AbstractDocument)this).getContent();
  88.          int var5 = var1.length;
  89.          StringBuffer var6 = new StringBuffer();
  90.  
  91.          for(int var7 = 0; var7 < var5; ++var7) {
  92.             ElementSpec var8 = var1[var7];
  93.             if (var8.getLength() > 0) {
  94.                var6.append(var8.getArray(), var8.getOffset(), var8.getLength());
  95.             }
  96.          }
  97.  
  98.          UndoableEdit var15 = var4.insertString(0, var6.toString());
  99.          int var9 = var6.length();
  100.          this.getClass();
  101.          AbstractDocument.DefaultDocumentEvent var10 = new AbstractDocument.DefaultDocumentEvent(this, 0, var9, EventType.INSERT);
  102.          var10.addEdit(var15);
  103.          this.buffer.create(var9, var1, var10);
  104.          super.insertUpdate(var10, (AttributeSet)null);
  105.          ((CompoundEdit)var10).end();
  106.          ((AbstractDocument)this).fireInsertUpdate(var10);
  107.          ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var10));
  108.       } catch (BadLocationException var13) {
  109.          throw new StateInvariantError("problem initializing");
  110.       } finally {
  111.          ((AbstractDocument)this).writeUnlock();
  112.       }
  113.  
  114.    }
  115.  
  116.    protected AbstractDocument.AbstractElement createDefaultRoot() {
  117.       ((AbstractDocument)this).writeLock();
  118.       SectionElement var1 = new SectionElement(this);
  119.       this.getClass();
  120.       AbstractDocument.BranchElement var2 = new AbstractDocument.BranchElement(this, var1, (AttributeSet)null);
  121.       this.getClass();
  122.       AbstractDocument.LeafElement var3 = new AbstractDocument.LeafElement(this, var2, (AttributeSet)null, 0, 1);
  123.       Element[] var4 = new Element[]{var3};
  124.       var2.replace(0, 0, var4);
  125.       var4[0] = var2;
  126.       ((AbstractDocument.BranchElement)var1).replace(0, 0, var4);
  127.       ((AbstractDocument)this).writeUnlock();
  128.       return var1;
  129.    }
  130.  
  131.    short createSpecsForInsertAfterNewline(Element var1, Element var2, AttributeSet var3, Vector var4, int var5, int var6) {
  132.       if (var1.getParentElement() == var2.getParentElement()) {
  133.          ElementSpec var7 = new ElementSpec(var3, (short)2);
  134.          var4.addElement(var7);
  135.          var7 = new ElementSpec(var3, (short)1);
  136.          var4.addElement(var7);
  137.          if (var2.getEndOffset() != var6) {
  138.             return 7;
  139.          }
  140.  
  141.          Element var8 = var2.getParentElement();
  142.          if (var8.getElementIndex(var5) + 1 < var8.getElementCount()) {
  143.             return 5;
  144.          }
  145.       } else {
  146.          Vector var15 = new Vector();
  147.          Vector var16 = new Vector();
  148.  
  149.          for(Element var9 = var2; var9 != null; var9 = var9.getParentElement()) {
  150.             var15.addElement(var9);
  151.          }
  152.  
  153.          Element var17 = var1;
  154.  
  155.          int var10;
  156.          for(var10 = -1; var17 != null && (var10 = var15.indexOf(var17)) == -1; var17 = var17.getParentElement()) {
  157.             var16.addElement(var17);
  158.          }
  159.  
  160.          if (var17 != null) {
  161.             for(int var11 = 0; var11 < var10; ++var11) {
  162.                var4.addElement(new ElementSpec((AttributeSet)null, (short)2));
  163.             }
  164.  
  165.             Object var12 = null;
  166.  
  167.             for(int var13 = var16.size() - 1; var13 >= 0; --var13) {
  168.                ElementSpec var18 = new ElementSpec(((Element)var16.elementAt(var13)).getAttributes(), (short)1);
  169.                if (var13 > 0) {
  170.                   var18.setDirection((short)5);
  171.                }
  172.  
  173.                var4.addElement(var18);
  174.             }
  175.  
  176.             if (var16.size() > 0) {
  177.                return 5;
  178.             }
  179.  
  180.             return 7;
  181.          }
  182.       }
  183.  
  184.       return 6;
  185.    }
  186.  
  187.    ChangeListener createStyleChangeListener() {
  188.       return new StyleChangeHandler(this);
  189.    }
  190.  
  191.    ChangeListener createStyleContextChangeListener() {
  192.       return new StyleContextChangeHandler(this);
  193.    }
  194.  
  195.    public Color getBackground(AttributeSet var1) {
  196.       StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  197.       return var2.getBackground(var1);
  198.    }
  199.  
  200.    public Element getCharacterElement(int var1) {
  201.       Object var2 = null;
  202.  
  203.       int var3;
  204.       for(var4 = this.getDefaultRootElement(); !var4.isLeaf(); var4 = var4.getElement(var3)) {
  205.          var3 = var4.getElementIndex(var1);
  206.       }
  207.  
  208.       return var4;
  209.    }
  210.  
  211.    public Element getDefaultRootElement() {
  212.       return this.buffer.getRootElement();
  213.    }
  214.  
  215.    public Font getFont(AttributeSet var1) {
  216.       StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  217.       return var2.getFont(var1);
  218.    }
  219.  
  220.    public Color getForeground(AttributeSet var1) {
  221.       StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  222.       return var2.getForeground(var1);
  223.    }
  224.  
  225.    public Style getLogicalStyle(int var1) {
  226.       Style var2 = null;
  227.       Element var3 = this.getParagraphElement(var1);
  228.       if (var3 != null) {
  229.          AttributeSet var4 = var3.getAttributes();
  230.          var2 = (Style)var4.getResolveParent();
  231.       }
  232.  
  233.       return var2;
  234.    }
  235.  
  236.    public Element getParagraphElement(int var1) {
  237.       Object var2 = null;
  238.  
  239.       int var3;
  240.       for(var4 = this.getDefaultRootElement(); !var4.isLeaf(); var4 = var4.getElement(var3)) {
  241.          var3 = var4.getElementIndex(var1);
  242.       }
  243.  
  244.       return var4 != null ? var4.getParentElement() : var4;
  245.    }
  246.  
  247.    public Style getStyle(String var1) {
  248.       StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  249.       return var2.getStyle(var1);
  250.    }
  251.  
  252.    public Enumeration getStyleNames() {
  253.       return ((StyleContext)((AbstractDocument)this).getAttributeContext()).getStyleNames();
  254.    }
  255.  
  256.    protected void insert(int var1, ElementSpec[] var2) throws BadLocationException {
  257.       if (var2 != null && var2.length != 0) {
  258.          try {
  259.             ((AbstractDocument)this).writeLock();
  260.             AbstractDocument.Content var5 = ((AbstractDocument)this).getContent();
  261.             int var6 = var2.length;
  262.             StringBuffer var7 = new StringBuffer();
  263.  
  264.             for(int var8 = 0; var8 < var6; ++var8) {
  265.                ElementSpec var9 = var2[var8];
  266.                if (var9.getLength() > 0) {
  267.                   var7.append(var9.getArray(), var9.getOffset(), var9.getLength());
  268.                }
  269.             }
  270.  
  271.             UndoableEdit var14 = var5.insertString(var1, var7.toString());
  272.             int var10 = var7.length();
  273.             this.getClass();
  274.             AbstractDocument.DefaultDocumentEvent var11 = new AbstractDocument.DefaultDocumentEvent(this, var1, var10, EventType.INSERT);
  275.             var11.addEdit(var14);
  276.             this.buffer.insert(var1, var10, var2, var11);
  277.             super.insertUpdate(var11, (AttributeSet)null);
  278.             ((CompoundEdit)var11).end();
  279.             ((AbstractDocument)this).fireInsertUpdate(var11);
  280.             ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var11));
  281.          } finally {
  282.             ((AbstractDocument)this).writeUnlock();
  283.          }
  284.  
  285.       }
  286.    }
  287.  
  288.    protected void insertUpdate(AbstractDocument.DefaultDocumentEvent var1, AttributeSet var2) {
  289.       int var3 = var1.getOffset();
  290.       int var4 = var1.getLength();
  291.       if (var2 == null) {
  292.          var2 = SimpleAttributeSet.EMPTY;
  293.       }
  294.  
  295.       Element var5 = this.getParagraphElement(var3 + var4);
  296.       AttributeSet var6 = var5.getAttributes();
  297.       Element var7 = this.getParagraphElement(var3);
  298.       Element var8 = var7.getElement(var7.getElementIndex(var3));
  299.       int var9 = var3 + var4;
  300.       boolean var10 = var8.getEndOffset() == var9;
  301.       AttributeSet var11 = var8.getAttributes();
  302.  
  303.       try {
  304.          Segment var12 = new Segment();
  305.          Vector var13 = new Vector();
  306.          ElementSpec var14 = null;
  307.          boolean var15 = false;
  308.          short var16 = 6;
  309.          if (var3 > 0) {
  310.             ((AbstractDocument)this).getText(var3 - 1, 1, var12);
  311.             if (var12.array[var12.offset] == '\n') {
  312.                var15 = true;
  313.                var16 = this.createSpecsForInsertAfterNewline(var5, var7, var6, var13, var3, var9);
  314.  
  315.                for(int var17 = var13.size() - 1; var17 >= 0; --var17) {
  316.                   ElementSpec var18 = (ElementSpec)var13.elementAt(var17);
  317.                   if (var18.getType() == 1) {
  318.                      var14 = var18;
  319.                      break;
  320.                   }
  321.                }
  322.             }
  323.          }
  324.  
  325.          if (!var15) {
  326.             var6 = var7.getAttributes();
  327.          }
  328.  
  329.          ((AbstractDocument)this).getText(var3, var4, var12);
  330.          char[] var26 = var12.array;
  331.          int var27 = var12.offset + var12.count;
  332.          int var19 = var12.offset;
  333.  
  334.          for(int var20 = var12.offset; var20 < var27; ++var20) {
  335.             if (var26[var20] == '\n') {
  336.                int var21 = var20 + 1;
  337.                var13.addElement(new ElementSpec(var2, (short)3, var21 - var19));
  338.                var13.addElement(new ElementSpec((AttributeSet)null, (short)2));
  339.                var14 = new ElementSpec(var6, (short)1);
  340.                var13.addElement(var14);
  341.                var19 = var21;
  342.             }
  343.          }
  344.  
  345.          if (var19 < var27) {
  346.             var13.addElement(new ElementSpec(var2, (short)3, var27 - var19));
  347.          }
  348.  
  349.          ElementSpec var28 = (ElementSpec)var13.firstElement();
  350.          int var22 = ((AbstractDocument)this).getLength();
  351.          if (var28.getType() == 3 && var11.isEqual(var2)) {
  352.             var28.setDirection((short)4);
  353.          }
  354.  
  355.          if (var14 != null) {
  356.             if (var15) {
  357.                var14.setDirection(var16);
  358.             } else if (var7.getEndOffset() != var9) {
  359.                var14.setDirection((short)7);
  360.             } else {
  361.                Element var23 = var7.getParentElement();
  362.                int var24 = var23.getElementIndex(var3);
  363.                if (var24 + 1 < var23.getElementCount() && !var23.getElement(var24 + 1).isLeaf()) {
  364.                   var14.setDirection((short)5);
  365.                }
  366.             }
  367.          }
  368.  
  369.          if (var10 && var9 < var22) {
  370.             ElementSpec var30 = (ElementSpec)var13.lastElement();
  371.             if (var30.getType() == 3 && var30.getDirection() != 4 && (var14 == null && (var5 == var7 || var15) || var14 != null && var14.getDirection() != 6)) {
  372.                Element var32 = var5.getElement(var5.getElementIndex(var9));
  373.                if (var32.isLeaf() && var2.isEqual(var32.getAttributes())) {
  374.                   var30.setDirection((short)5);
  375.                }
  376.             }
  377.          } else if (!var10 && var14 != null && var14.getDirection() == 7) {
  378.             ElementSpec var29 = (ElementSpec)var13.lastElement();
  379.             if (var29.getType() == 3 && var29.getDirection() != 4 && var2.isEqual(var11)) {
  380.                var29.setDirection((short)5);
  381.             }
  382.          }
  383.  
  384.          if (Utilities.isComposedTextAttributeDefined(var2)) {
  385.             ((MutableAttributeSet)var2).addAttributes(var11);
  386.             ((MutableAttributeSet)var2).addAttribute("$ename", "content");
  387.          }
  388.  
  389.          ElementSpec[] var31 = new ElementSpec[var13.size()];
  390.          var13.copyInto(var31);
  391.          this.buffer.insert(var3, var4, var31, var1);
  392.       } catch (BadLocationException var25) {
  393.       }
  394.  
  395.       super.insertUpdate(var1, var2);
  396.    }
  397.  
  398.    private void readObject(ObjectInputStream var1) throws ClassNotFoundException, IOException {
  399.       this.listeningStyles = new Vector();
  400.       var1.defaultReadObject();
  401.       if (this.styleContextChangeListener == null && super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener"))) > 0) {
  402.          this.styleContextChangeListener = this.createStyleContextChangeListener();
  403.          if (this.styleContextChangeListener != null) {
  404.             StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  405.             var2.addChangeListener(this.styleContextChangeListener);
  406.          }
  407.  
  408.          this.updateStylesListeningTo();
  409.       }
  410.  
  411.    }
  412.  
  413.    public void removeDocumentListener(DocumentListener var1) {
  414.       Vector var2 = this.listeningStyles;
  415.       synchronized(var2){}
  416.  
  417.       try {
  418.          super.removeDocumentListener(var1);
  419.          if (super.listenerList.getListenerCount(class$javax$swing$event$DocumentListener != null ? class$javax$swing$event$DocumentListener : (class$javax$swing$event$DocumentListener = class$("javax.swing.event.DocumentListener"))) == 0) {
  420.             for(int var4 = this.listeningStyles.size() - 1; var4 >= 0; --var4) {
  421.                ((Style)this.listeningStyles.elementAt(var4)).removeChangeListener(this.styleChangeListener);
  422.             }
  423.  
  424.             this.listeningStyles.removeAllElements();
  425.             if (this.styleContextChangeListener != null) {
  426.                StyleContext var5 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  427.                var5.removeChangeListener(this.styleContextChangeListener);
  428.             }
  429.          }
  430.       } catch (Throwable var7) {
  431.          throw var7;
  432.       }
  433.  
  434.    }
  435.  
  436.    public void removeStyle(String var1) {
  437.       StyleContext var2 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  438.       var2.removeStyle(var1);
  439.    }
  440.  
  441.    protected void removeUpdate(AbstractDocument.DefaultDocumentEvent var1) {
  442.       super.removeUpdate(var1);
  443.       this.buffer.remove(var1.getOffset(), var1.getLength(), var1);
  444.    }
  445.  
  446.    public void setCharacterAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
  447.       try {
  448.          ((AbstractDocument)this).writeLock();
  449.          this.getClass();
  450.          AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
  451.          this.buffer.change(var1, var2, var7);
  452.          AttributeSet var8 = var3.copyAttributes();
  453.          int var9 = Integer.MAX_VALUE;
  454.  
  455.          for(int var10 = var1; var10 < var1 + var2; var10 = var9) {
  456.             Element var11 = this.getCharacterElement(var10);
  457.             var9 = var11.getEndOffset();
  458.             MutableAttributeSet var12 = (MutableAttributeSet)var11.getAttributes();
  459.             var7.addEdit(new AttributeUndoableEdit(var11, var8, var4));
  460.             if (var4) {
  461.                var12.removeAttributes(var12);
  462.             }
  463.  
  464.             var12.addAttributes(var3);
  465.          }
  466.  
  467.          ((CompoundEdit)var7).end();
  468.          ((AbstractDocument)this).fireChangedUpdate(var7);
  469.          ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
  470.       } finally {
  471.          ((AbstractDocument)this).writeUnlock();
  472.       }
  473.  
  474.    }
  475.  
  476.    public void setLogicalStyle(int var1, Style var2) {
  477.       Element var3 = this.getParagraphElement(var1);
  478.       if (var3 != null && var3 instanceof AbstractDocument.AbstractElement) {
  479.          try {
  480.             ((AbstractDocument)this).writeLock();
  481.             StyleChangeUndoableEdit var6 = new StyleChangeUndoableEdit((AbstractDocument.AbstractElement)var3, var2);
  482.             ((AbstractDocument.AbstractElement)var3).setResolveParent(var2);
  483.             int var7 = var3.getStartOffset();
  484.             int var8 = var3.getEndOffset();
  485.             this.getClass();
  486.             AbstractDocument.DefaultDocumentEvent var9 = new AbstractDocument.DefaultDocumentEvent(this, var7, var8 - var7, EventType.CHANGE);
  487.             var9.addEdit(var6);
  488.             ((CompoundEdit)var9).end();
  489.             ((AbstractDocument)this).fireChangedUpdate(var9);
  490.             ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var9));
  491.          } finally {
  492.             ((AbstractDocument)this).writeUnlock();
  493.          }
  494.       }
  495.  
  496.    }
  497.  
  498.    public void setParagraphAttributes(int var1, int var2, AttributeSet var3, boolean var4) {
  499.       try {
  500.          ((AbstractDocument)this).writeLock();
  501.          this.getClass();
  502.          AbstractDocument.DefaultDocumentEvent var7 = new AbstractDocument.DefaultDocumentEvent(this, var1, var2, EventType.CHANGE);
  503.          AttributeSet var8 = var3.copyAttributes();
  504.          Element var9 = this.getDefaultRootElement();
  505.          int var10 = var9.getElementIndex(var1);
  506.          int var11 = var9.getElementIndex(var1 + (var2 > 0 ? var2 - 1 : 0));
  507.  
  508.          for(int var12 = var10; var12 <= var11; ++var12) {
  509.             Element var13 = var9.getElement(var12);
  510.             MutableAttributeSet var14 = (MutableAttributeSet)var13.getAttributes();
  511.             var7.addEdit(new AttributeUndoableEdit(var13, var8, var4));
  512.             if (var4) {
  513.                var14.removeAttributes(var14);
  514.             }
  515.  
  516.             var14.addAttributes(var3);
  517.          }
  518.  
  519.          ((CompoundEdit)var7).end();
  520.          ((AbstractDocument)this).fireChangedUpdate(var7);
  521.          ((AbstractDocument)this).fireUndoableEditUpdate(new UndoableEditEvent(this, var7));
  522.       } finally {
  523.          ((AbstractDocument)this).writeUnlock();
  524.       }
  525.  
  526.    }
  527.  
  528.    protected void styleChanged(Style var1) {
  529.       this.getClass();
  530.       AbstractDocument.DefaultDocumentEvent var2 = new AbstractDocument.DefaultDocumentEvent(this, 0, ((AbstractDocument)this).getLength(), EventType.CHANGE);
  531.       ((CompoundEdit)var2).end();
  532.       ((AbstractDocument)this).fireChangedUpdate(var2);
  533.    }
  534.  
  535.    void updateStylesListeningTo() {
  536.       Vector var1 = this.listeningStyles;
  537.       synchronized(var1){}
  538.  
  539.       try {
  540.          StyleContext var3 = (StyleContext)((AbstractDocument)this).getAttributeContext();
  541.          if (this.styleChangeListener == null) {
  542.             this.styleChangeListener = this.createStyleChangeListener();
  543.          }
  544.  
  545.          if (this.styleChangeListener != null && var3 != null) {
  546.             Enumeration var4 = var3.getStyleNames();
  547.             Vector var5 = (Vector)this.listeningStyles.clone();
  548.             this.listeningStyles.removeAllElements();
  549.  
  550.             while(var4.hasMoreElements()) {
  551.                String var6 = (String)var4.nextElement();
  552.                Style var7 = var3.getStyle(var6);
  553.                int var8 = var5.indexOf(var7);
  554.                this.listeningStyles.addElement(var7);
  555.                if (var8 == -1) {
  556.                   var7.addChangeListener(this.styleChangeListener);
  557.                } else {
  558.                   var5.removeElementAt(var8);
  559.                }
  560.             }
  561.  
  562.             for(int var11 = var5.size() - 1; var11 >= 0; --var11) {
  563.                Style var12 = (Style)var5.elementAt(var11);
  564.                var12.removeChangeListener(this.styleChangeListener);
  565.             }
  566.  
  567.             if (this.listeningStyles.size() == 0) {
  568.                this.styleChangeListener = null;
  569.             }
  570.          }
  571.       } catch (Throwable var10) {
  572.          throw var10;
  573.       }
  574.  
  575.    }
  576. }
  577.